package com.fau.hm.service;

import java.util.Map;

import com.fau.hm.entity.MedicalAdmin;
import com.fau.hm.entity.MedicalLeaveApprove;
import com.fau.hm.entity.MedicalLeaveInfo;
import com.fau.hm.entity.MedicalLeaveNotBy;
import com.fau.hm.util.Page;

/**
 * @desc 休假管理
 * @author dangjh
 * @datetime 2014年10月24日,下午10:23:05
 */
public interface ILeaveManagerService {

	/**
	 * @desc 查询休假基本信息列表-个人
	 * @param map
	 * @param bean
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:25:10
	 */
	public Page findLeaveInfo(Map<String, Object> map, MedicalLeaveInfo leaveInfo, MedicalAdmin admin);
	
	/**
	 * @desc 批假通过信息列表-个人
	 * @param map
	 * @param approve
	 * @param admin
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午3:33:10
	 */
	public Page findApproveLeave(Map<String, Object> map, MedicalLeaveApprove leave, MedicalAdmin admin);
	
	/**
	 * @desc 批假未通过信息列表-个人
	 * @param map
	 * @param approve
	 * @param admin
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午3:33:10
	 */
	public Page findApproveNotByLeave(Map<String, Object> map, MedicalLeaveNotBy notby, MedicalAdmin admin);
	
	/**
	 * @desc 保存休假基本信息
	 * @param bean
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:25:51
	 */
	public boolean saveLeaveInfo(MedicalLeaveInfo leaveInfo, MedicalAdmin admin);
	
	/**
	 * @desc 编辑休假基本信息
	 * @param bean
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:25:51
	 */
	public boolean editLeaveInfo(MedicalLeaveInfo leaveInfo);
	
	/**
	 * @desc 未通过的休假单重新申请休假
	 * @param bean
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:26:34
	 */
	public boolean saveEditLeaveInfo(MedicalLeaveNotBy notby);
	
	/**
	 * @desc 删除休假信息
	 * @param bean
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:27:21
	 */
	public void deleteLeaveInfo(MedicalLeaveInfo bean);

	/**
	 * @desc 审批企业下所有员工的请假单列表
	 * @param map
	 * @param bean
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月25日,下午4:25:10
	 */
	public Page findLeaveApproveInfo(Map<String, Object> map, MedicalLeaveInfo leaveInfo, MedicalAdmin admin);
	
	/**
	 * @desc 查询本企业所有员工的请假记录-已通过
	 * @param map
	 * @param admin
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午1:05:20
	 */
	public Page findLeaveLogAll(Map<String, Object> map, MedicalLeaveApprove leaveInfo, MedicalAdmin admin);
	
	/**
	 * @desc 查询本企业所有员工的请假记录-未通过
	 * @param map
	 * @param admin
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午1:05:20
	 */
	public Page findLeaveLogNotByAll(Map<String, Object> map, MedicalLeaveNotBy leaveInfo, MedicalAdmin admin);
	
	/**
	 * @desc 批假通过
	 * @param approve
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午3:33:59
	 */
	public void saveApproveLeave(MedicalLeaveApprove leave);
	
	/**
	 * @desc 批假未通过
	 * @param notby
	 * @return
	 * @author dangjh
	 * @datetime 2014年10月26日,下午3:33:59
	 */
	public void saveNotByApproveLeave(MedicalLeaveNotBy notby);
	
	/**
	 * @desc 回收休假信息(修改休假状态)
	 * @param info
	 * @return
	 * @author dangjh
	 * @datetime 2014年11月4日,下午11:37:26
	 */
	public boolean editLeaveBack(MedicalLeaveInfo info);
	
}
